﻿#include "widget.h"
#include <QQuickView>
#include <QVBoxLayout>
#include <QQuickWidget>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    resize(300, 300);

        // 方式一
        // QQuickView *pView = new QQuickView();
        // QWidget *pWidget = QWidget::createWindowContainer(pView, this);
        // pView->setResizeMode(QQuickView::SizeRootObjectToView);
        // pView->setSource(QUrl("qrc:/addqml.qml"));

        // 方式二
        QQuickWidget *pWidget = new QQuickWidget();
        pWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
        pWidget->setSource(QUrl("qrc:/addqml.qml"));

       m_pButton = new QPushButton(this);
       m_pButton->setText("Qt Widgets...");

        QVBoxLayout *pLayout = new QVBoxLayout();
        pLayout->addWidget(pWidget);
        pLayout->addWidget(m_pButton);
        pLayout->setSpacing(10);
        pLayout->setContentsMargins(10, 10, 10, 10);
        setLayout(pLayout);

        // QML 与 Qt Widgets 通信
        // QObject *pRoot = (QObject*)pView->rootObject();
        QObject *pRoot = (QObject*)pWidget->rootObject();
        if (pRoot != NULL) {
            connect(pRoot, SIGNAL(qmlSignal()), this, SLOT(receiveFromQml()));
            connect(m_pButton, SIGNAL(clicked(bool)), pRoot, SIGNAL(cSignal()));
        }
}

Widget::~Widget()
{
   // delete ui;
}

void Widget::receiveFromQml()
{
    m_pButton->setText("Call the C++ slot");
}
